// 开发模式热重载
const chokidar = require('chokidar');
const path = require('path');

function setupDevReload(mainWindow) {
    let isReloading = false;
    
    console.log('[Dev] 热重载已启用');
    
    // 监听 renderer 文件变化
    const rendererPath = path.join(__dirname, '../../renderer');
    const watcher = chokidar.watch(['**/*.html', '**/*.css', '**/*.js'], {
        cwd: rendererPath,
        ignored: /node_modules/,
        persistent: true,
        ignoreInitial: true
    });
    
    watcher.on('change', (filePath) => {
        if (!isReloading) {
            isReloading = true;
            console.log(`[Dev] 渲染进程文件变化: ${filePath}`);
            console.log('[Dev] 正在重载页面...');
            
            // 重载页面
            if (mainWindow && !mainWindow.isDestroyed()) {
                mainWindow.reload();
            }
            
            // 重置标记
            setTimeout(() => {
                isReloading = false;
            }, 1000);
        }
    });

    // 监听 Main 进程文件变化，重启应用
    const mainPath = path.join(__dirname, '../');
    const mainWatcher = chokidar.watch(['**/*.js'], {
        cwd: mainPath,
        ignored: /(node_modules|utils\/dev-reload\.js)/,
        persistent: true,
        ignoreInitial: true
    });
    
    mainWatcher.on('change', (filePath) => {
        console.log(`[Dev] 主进程文件变化: ${filePath}`);
        console.log('[Dev] 主进程文件更改需要重启应用');
        
        // 显示重启提示
        if (mainWindow && !mainWindow.isDestroyed()) {
            mainWindow.webContents.executeJavaScript(`
                if (confirm('主进程文件已更改，需要重启应用。是否现在重启？')) {
                    location.reload();
                }
            `);
        }
    });
}

module.exports = { default: setupDevReload };
